home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_11_06 / 1106127a < prev    next >
Text File  |  1993-02-26  |  794b  |  39 lines

  1. /* cat.c:    concatenate files */
  2.  
  3. #include <stdio.h>
  4. #include <assert.h>
  5.  
  6. void copy(FILE *, FILE *);
  7.  
  8. main(int argc, char **argv)
  9. {
  10.     int i;
  11.     FILE *f;
  12.     FILE *std_out = fdopen(fileno(stdout),"wb");
  13.  
  14.     assert(std_out != NULL);
  15.     for (i = 1; i < argc; ++i)
  16.         if ((f = fopen(argv[i],"rb")) == NULL)
  17.             fprintf(stderr,"cat: Can't open %s\n",argv[i]);
  18.         else 
  19.         {
  20.             copy(f,std_out);
  21.             fclose(f);
  22.         }
  23.     return 0;
  24. }
  25.  
  26. void copy(FILE *from, FILE *to)
  27. {
  28.     size_t count;
  29.     static char buf[BUFSIZ];
  30.  
  31.     while (!feof(from))
  32.     {
  33.         count = fread(buf,1,BUFSIZ,from);
  34.         assert(ferror(from) == 0);
  35.         assert(fwrite(buf,1,count,to) == count);
  36.         assert(ferror(to) == 0);
  37.     }
  38. }
  39.